<?php
/**
 * 集合場所選択メニューコンポーネントモジュール
 */
require_once __DIR__ . '/../ZendPartial.php';
require_once APPLICATION_PATH . '/models/Place/Controller.php';
require_once APPLICATION_PATH . '/models/Names/Names.php';
require_once 'Request/Request.php';

/**
 * 集合場所選択メニューコンポーネントクラス
 */
class Components_MapSelect_Partial extends Components_ZendPartial
{
	/** プルダウンメニューテンプレート名 */
	const TEMPLATE_PULLDOWN_MENU = 'MapSelectPartial.tpl';
	/** Y!マップ確認用ＪＡＶＡＳＣＲＩＰＴテンプレート名 */
	const TEMPLATE_OPEN_YMAP_JAVASCRIPT = 'OpenMapWinJs.php';

	/** HTTPリクエスト名 */
	const HTTP_NAME = 'mapid';

	/** Y!マップ確認用javascriptメソッド名 */
	const NAME_METHOD_JAVASCRIPT_OPEN_YMAP = 'openMap';

	/** ハッシュキー：オプション：ネーム */
	const KEY_OPTION_NAME = 'OPTION_NAME';
	/** ハッシュキー：オプション：表示文字 */
	const KEY_OPTION_DISP = 'OPTION_DISP';

	/** 集合場所一覧データ */
	protected $_MapDataset;

	protected $_objCalendar;

	/**
	 * コンストラクタ
	 */
	public function __construct($objCalendar=FALSE)
	{
		parent::__construct(__DIR__);
		$objMap = new Models_Place_Xml_Controller();
//		$this->_MapDataset = $objMap->getArrayData();
//		$this->view->MapDataset = $this->_MapDataset['LIST'];
		$this->view->MapDataset = $objMap->getDataset();

		/** カレンダーデータセットオブジェクト設置判定 */
		if ($this->_objCalendar === FALSE) {
			$this->_objCalendar = $this->_createCalendarDatasetObject();
		}else{
			$this->_objCalendar = $objCalendar;
		}

		/***
		 * 初期選択状態設定
		*/
		$this->_setInitialSelected();
	}

	protected function _setInitialSelected()
	{
		$this->view->SELECT_VALUE = '';
		if ($this->_objHttpRequest->get(Names::ASSEMBLYPLACE) != ''){
			$this->view->SELECT_VALUE = $this->_objHttpRequest->get(Names::ASSEMBLYPLACE);
		}else{
			$sId = $this->_objHttpRequest->get(Names::YOTEIID);
			if ( $sId != '' ) {
				$Dataset = $this->_objCalendar->searchId($sId);
				$this->view->SELECT_VALUE = $Dataset[Models_Calendar_Controller::KEY_MAP_ID];
			}
		}
		/***
		 * 値が空でHTTPリクエストキーが存在する場合は、選択状態をなしにする
		 */
		if ( isset($_REQUEST[Names::ASSEMBLYPLACE]) ){
			if ( $_REQUEST[Names::ASSEMBLYPLACE] == ''){
				$this->view->SELECT_VALUE = '';
			}
		}
	}

	/**
	 * 選択プルダウンメニューふぇっち
	 */
	public function fetchPulldownMenu()
	{
		$TemplateFileName = self::TEMPLATE_PULLDOWN_MENU;
		$sHtml = parent::fetch($TemplateFileName);
		return $sHtml;
	}

	/**
	 * Y!マップ確認用Javascriptフェッチ
	 */
	public function fetchYMapOpenFetch($FormName)
	{
		$this->view->FormName = $FormName;
		$sHtml = parent::fetch(self::TEMPLATE_OPEN_YMAP_JAVASCRIPT);
		return $sHtml;
	}

	/**
	 * Ｙ！マップ確認用Javascriptメソッド名を返す
	 */
}